package com.naiterui.ehp.bp.utils.beans.annotation;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.naiterui.ehp.bp.utils.beans.ser.UrlFieldDeserializer;
import com.naiterui.ehp.bp.utils.beans.ser.UrlFieldSerializer;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.METHOD })
@JacksonAnnotationsInside
@JsonSerialize(using = UrlFieldSerializer.class)
@JsonDeserialize(using = UrlFieldDeserializer.class)
public @interface Url {

    /**
     * 如果设置host，那么不会获取config
     *
     * @return
     */
    String host() default "";

    /**
     * 读取配置
     *
     * @return
     */
    String config();

    /**
     * 序列化 是否处理，默认处理
     * JavaBean ——> 处理 ——> json字符串
     *
     * @return
     */
    boolean serialize() default true;

    /**
     * 反序列化 是否处理，默认不处理
     * json字符串 ——> 处理 ——> JavaBean
     *
     * @return
     */
    boolean deserialize() default false;

}